var $dataInfo = $('#taskInfo');
var $dataUser = $('#taskUser');
var $dateil = $('#taskUsers');

//防止表头与表格不对齐
$(window).resize(function () {
    $dataInfo.bootstrapTable('resetView');
    $dataUser.bootstrapTable('resetView');
    $dateil.bootstrapTable('resetView');
});


$(function () {

    dataInfoInit();
    initTaskUser();

});

/**
 * 任务管理
 */
function dataInfoInit() {
    //先销毁表格
    $dataInfo.bootstrapTable('destroy');
    $dataInfo.bootstrapTable({
        classes: 'table table-bordered table-hover table-striped',
        url: '/task/taskInfo/getAllTaskInfo',//请求地址
        method: 'post',//请求方式
        contentType: "application/x-www-form-urlencoded",//请求内容类型
        dataType: "json",//数据类型
        striped: true,//是否显示行间隔色
        sortable: true,//是否启用排序
        sortOrder: "desc",//排序方式
        sortName: 'createTm',//排序字段
        cache: false,//是否使用缓存
        showColumns: false,//显示隐藏列
        showRefresh: false,//显示刷新按钮
        showToggle: false,//切换显示样式
        showFooter: false,//显示Table脚部
        pagination: true,//是否显示分页
        showPaginationSwitch: false,//是否显示分页按钮
        clickToSelect: true,//是否启用点击选中行
        singleSelect: true,
        minimumCountColumns: 2,//最少要显示的列数
        undefinedText: '',//cell没有值时显示
        sidePagination: "server",//分页方式：client客户端分页，server服务端分页
        uniqueId: 'taskId',
        idField: 'taskId',
        pageSize: 5,//每页的记录行数
        pageNumber: 1,//初始化加载第1页，默认第1页
        pageList: "[5, 10, 15, 20]",//可供选择的每页的行数
        fixedColumns: true,     // 冻结列
        fixedNumber: 1,         // 左侧固定列
        fixedRightNumber: 1,    // 右侧固定列
        queryParams: queryParams,//查询参数
        columns: [
            {title: '主键', field: 'taskId', visible: false},

            // {title: '序号', field: 'index', checkbox:"true"},
            {title: '任务名称', field: 'taskName', align: 'left', valign: 'middle'},
            {title: '任务类型', field: 'typeStr', align: 'left', valign: 'middle'},

            {title: '任务目标', field: 'target', align: 'left', valign: 'middle'},
            {title: '操作', field: 'operate', align: 'left',  formatter: genderOpt}
        ],
        responseHandler: function (result) {
            if (result.code == "000000") {
                var obj = {
                    "rows": result.data,
                    "total": result.totalRecords//总条数
                };
            } else {
                var obj = {
                    "total": 0,
                    "rows": [],
                }
            }
            return obj;
        },
        onLoadSuccess: function () {
            //加载成功时执行
            $("[data-toggle='tooltip']").tooltip();//加这个是为了让操作列的提示图标显示在上方
        },
        onLoadError: function (status) {
            if (status == 403) {
                alert("权限不足！禁止访问！");
            } else {
                //加载失败时执行
                alert("加载失败！");
            }
        },
        formatLoadingMessage: function () {
            return "请稍等，加载中...";
        },
        formatNoMatches: function () {
            return '无符合条件的记录';
        },
    });
}

function initTaskUser(){
    $dataUser.bootstrapTable('destroy');
    $dataUser.bootstrapTable({
        classes: 'table table-bordered table-hover table-striped',
        url: '/task/taskUser/getTaskUserByTaskId',//请求地址
        method: 'post',//请求方式
        contentType: "application/x-www-form-urlencoded",//请求内容类型
        dataType: "json",//数据类型
        striped: true,//是否显示行间隔色
        sortable: true,//是否启用排序
        sortOrder: "desc",//排序方式
        sortName: 'createTm',//排序字段
        cache: false,//是否使用缓存
        showColumns: false,//显示隐藏列
        showRefresh: false,//显示刷新按钮
        showToggle: false,//切换显示样式
        showFooter: false,//显示Table脚部
        pagination: true,//是否显示分页
        showPaginationSwitch: false,//是否显示分页按钮
        clickToSelect: false,//是否启用点击选中行
        singleSelect: false,
        minimumCountColumns: 2,//最少要显示的列数
        undefinedText: '',//cell没有值时显示
        sidePagination: "server",//分页方式：client客户端分页，server服务端分页
        uniqueId: 'taskUserId',
        idField: 'taskUserId',
        pageSize: 5,//每页的记录行数
        pageNumber: 1,//初始化加载第1页，默认第1页
        pageList: "[5, 10, 15, 20]",//可供选择的每页的行数
        fixedColumns: true,     // 冻结列
        fixedNumber: 4,         // 左侧固定列
        // fixedRightNumber: 1,    // 右侧固定列
        queryParams: queryParams,//查询参数
        columns: [
            {title: '主键', field: 'taskUserId', visible: false},
            {title: '任务ID', field: 'taskId', visible: false},
            {title: '用户ID', field: 'accountId', visible: false},
            // {title: '序号', field: 'index', checkbox:"true"},
            {title: '任务名称', field: 'taskName', align: 'left', valign: 'middle'},
            {title: '任务所有人', field: 'userName', align: 'left', valign: 'middle'},
            {title: '任务进度', field: 'schedule', align: 'left', valign: 'middle',formatter: splicingPercentSigns},
            {title: '任务状态', field: 'statusStr', align: 'left', valign: 'middle'},
            {title: '任务起止时间', align: 'left', valign: 'middle',formatter: timeStr},
            {title: '操作', field: 'operate', align: 'left',  formatter: genderOptUser}
        ],
        responseHandler: function (result) {
            if (result.code == "000000") {
                var obj = {
                    "rows": result.data,
                    "total": result.totalRecords//总条数
                };
            } else {
                var obj = {
                    "total": 0,
                    "rows": [],
                }
            }
            return obj;
        },
        onLoadSuccess: function () {
            //加载成功时执行
            $("[data-toggle='tooltip']").tooltip();//加这个是为了让操作列的提示图标显示在上方
        },
        onLoadError: function (status) {
            if (status == 403) {
                alert("权限不足！禁止访问！");
            } else {
                //加载失败时执行
                alert("加载失败！");
            }
        },
        formatLoadingMessage: function () {
            return "请稍等，加载中...";
        },
        formatNoMatches: function () {
            return '无符合条件的记录';
        },

    });

}

//拼接百分号
function splicingPercentSigns(value, row, index){
    return '<span> '+ value +'% </span>';
}
//拼接起止时间
function timeStr(value, row, index){
    return '<span> '+ row.startTime + '--' + row.endTime + ' </span>';
}

/**
 * 查询参数
 */
function queryParams(params) {
    //通用
    params.pageSize = params.limit;
    params.pageIndex = (params.offset / params.limit) + 1;
    params.sortName = params.sort; //排序列名
    params.sortOrder = params.order;//排序方式
    return params;
}

/**
 * 自定义操作列内容
 */
function genderOpt(value, row, index) {
    return [
        // '<a type="button" id="editTask" class="btn btn-xs btn-default m-r-5 show-btn" title="编辑任务" onclick="editTask(\''+row.taskId+'\');" data-toggle="tooltip">编辑任务</a>',
        '<a type="button" id="assignments" class="btn btn-xs btn-default m-r-5 show-btn" title="分配任务" onclick="assignments(\''+row.taskId+'\');" data-toggle="tooltip">分配任务</a>'
    ].join('');
}
function genderOptUser(value, row, index) {
    return [
        '<a type="button" id="dateil" class="btn btn-xs btn-default m-r-5 show-btn" title="详细" onclick="dateil(\''+row.taskId+'\');" data-toggle="tooltip">详细</a>'
    ].join('');
}

function searchTaskInfoList() {
    $dataInfo.bootstrapTable('refreshOptions', {pageNumber: 1, queryParams: queryParams});
}
function searchTaskUserList() {
    $dataUser.bootstrapTable('refreshOptions', {pageNumber: 1, queryParams: queryParams});
}

//分配任务
function assignments(taskId){
    $('#addTaskUser').modal('show');
    $('#assignmentsTaskId').val(taskId);
    // 初始化日期选择控件
    $('.date-input').datepicker({
        language: "zh-CN",
        autoclose: true,
        clearBtn: true,
        todayHighlight: true,
        format: "yyyy-mm-dd"
    });
    // 获取普管所在公司ID，此页面默认普管权限
    $.ajax({
        type: 'GET',
        dataType: "json",
        url: '/account/selectUserAccountByAccountId?accountId=',
        cache: false,
        async: false,
        success: (function (data) {
            if (data.code == '000000') {
                loadPersonByCompanyId(data.data.companyId);
            } else {
                $.alert("请求失败");
            }
        }),
        error: (function (res) {
            $.alert("请求失败");
        })
    });

}

//提交分配结果
function saveAssignments(){
    let jsonParams = {};
    jsonParams.taskId = $('#assignmentsTaskId').val();
    jsonParams.startTime = $('#startTime').val();
    jsonParams.endTime = $('#endTime').val();
    jsonParams.accountIds = $('#userSelect').val();

    $.ajax({
        type: 'POST',
        dataType: "json",
        contentType: "application/json;charset=utf-8",
        url: '/task/taskUser/saveAssignments',
        cache: false,
        async: true,
        data: JSON.stringify(jsonParams),
        success: (function (data) {
            if (data.code == '000000') {
                $.alert('提交成功！');
                $('#addTaskUser').modal('hide');
                searchTaskUserList();//重新加载
            } else {
                $.alert("提交失败！");
            }
        }),
        error: (function (res) {
            $.alert("请求失败");
        })
    });
}

//修改任务
function editTask(taskId){
    $('#taskId').val(taskId);
    $.ajax({
        type: 'GET',
        dataType: "json",
        url: '/task/taskInfo/getTaskInfoByTaskId?taskId='+taskId,
        cache: false,
        async: true,
        success: (function (data) {
            if (data.code == '000000') {
                $('#addTask').modal('show');
                $('#taskName').val(data.data.taskName);
                $('#taskTarget').val(data.data.target);
                $('#typeSelect').val(data.data.taskType);
            } else {
                $.alert("获取信息失败！");
            }
        }),
        error: (function (res) {
            $.alert("请求失败");
        })
    });
}

//添加任务
function addTaskInfo(){
    $('#addTask').modal('show');
}

// 当任务类型下拉改变时级联任务目标提示信息
$("select[id*='typeSelect']").on("change", function () {
    let type = $(this).val();//获取选中类型的数值
    if (type == 0){
        $("#type0").css({display:'block'})
        $("#type1").hide()
        $("#type2").hide()
        $("#type3").hide()
    }else if (type == 1){
        $("#type0").hide()
        $("#type1").css({display:'block'})
        $("#type2").hide()
        $("#type3").hide()
        // $("#type0").style.display='none';
        // $("#type1").style.display='inline';
        // $("#type2").style.display='none';
        // $("#type3").style.display='none';
    }else if (type == 2){
        $("#type0").hide()
        $("#type1").hide()
        $("#type2").css({display:'block'})
        $("#type3").hide()
        // $("#type0").style.display='none';
        // $("#type1").style.display='none';
        // $("#type2").style.display='inline';
        // $("#type3").style.display='none';
    }else if (type == 3){
        $("#type0").hide()
        $("#type1").hide()
        $("#type2").hide()
        $("#type3").css({display:'block'})
        // $("#type0").style.display='none';
        // $("#type1").style.display='none';
        // $("#type2").style.display='none';
        // $("#type3").style.display='inline';
    }
});

//保存任务信息
function saveTaskInfo(){
    let param = {};
    param.taskId = $('#taskId').val();
    param.taskName = $('#taskName').val();
    param.target = $('#taskTarget').val();
    param.taskType = $('#typeSelect option:selected').val();

    $.ajax({
        type: 'POST',
        dataType: "json",
        contentType: "application/json;charset=utf-8",
        url: '/task/taskInfo/saveTaskInfo',
        cache: false,
        async: true,
        data: JSON.stringify(param),
        success: (function (data) {
            if (data.code == '000000') {
                $.alert('保存成功！');
                $('#addTask').modal('hide');
                searchTaskInfoList();//重新加载
            } else {
                $.alert("保存失败！");
            }
        }),
        error: (function (res) {
            $.alert("请求失败");
        })
    });
}

/**
 * 根据公司ID查询人员信息
 * @param companyId
 */
function loadPersonByCompanyId(companyId) {
    $.getJSON("/account/getAccountListByCompanyId?companyId=" + companyId, function (data) {
        if (data.code == '000000') {
            var userNameOptionHtml = '';
            data.data.map(function (item) {
                userNameOptionHtml += '<option value="' + item.accountId + '">' + item.userName + '</option>';
            });
            $("#userSelect").html("");
            $('#userSelect').append(userNameOptionHtml);
            $('#userSelect').selectpicker('refresh');
        }
    });
}

function dateil(taskId){
    $('#taskUserDateil').modal('show');

    $.ajax({
        type: 'GET',
        dataType: "json",
        url: '/task/taskInfo/getTaskInfoByTaskId?taskId='+taskId,
        cache: false,
        async: true,
        success: (function (data) {
            if (data.code == '000000') {
                $('#taskNameDateil').html(data.data.taskName);
                $('#taskTypeDateil').html();
                $('#taskTargetDateil').html(data.data.target);
                let type = data.data.taskType;
                if(0 == type){
                    $('#taskTypeDateil').html('业绩');
                }else if(1 == type){
                    $('#taskTypeDateil').html('电话');
                }else if(2 == type){
                    $('#taskTypeDateil').html('联系人');
                }else if(3 == type){
                    $('#taskTypeDateil').html('会员');
                }

                initTaskUserDateil(taskId);
            } else {
                $.alert("加载失败！");
            }
        }),
        error: (function (res) {
            $.alert("请求失败");
        })
    });
}



function initTaskUserDateil(taskId){
    $dateil.bootstrapTable('destroy');
    $dateil.bootstrapTable({
        classes: 'table table-bordered table-hover table-striped',
        url: '/task/taskUser/getTaskUserByTaskId',//请求地址
        method: 'post',//请求方式
        contentType: "application/x-www-form-urlencoded",//请求内容类型
        dataType: "json",//数据类型
        striped: true,//是否显示行间隔色
        sortable: true,//是否启用排序
        sortOrder: "desc",//排序方式
        sortName: 'createTm',//排序字段
        cache: false,//是否使用缓存
        showColumns: false,//显示隐藏列
        showRefresh: false,//显示刷新按钮
        showToggle: false,//切换显示样式
        showFooter: false,//显示Table脚部
        pagination: true,//是否显示分页
        showPaginationSwitch: false,//是否显示分页按钮
        clickToSelect: false,//是否启用点击选中行
        singleSelect: false,
        minimumCountColumns: 2,//最少要显示的列数
        undefinedText: '',//cell没有值时显示
        sidePagination: "server",//分页方式：client客户端分页，server服务端分页
        uniqueId: 'taskUserId',
        idField: 'taskUserId',
        pageSize: 10,//每页的记录行数
        pageNumber: 1,//初始化加载第1页，默认第1页
        pageList: "[5, 10, 15, 20]",//可供选择的每页的行数
        fixedColumns: true,     // 冻结列
        fixedNumber: 4,         // 左侧固定列
        // fixedRightNumber: 1,    // 右侧固定列
        queryParams: function(params){
            params.pageSize = params.limit;
            params.pageIndex = (params.offset / params.limit) + 1;
            params.sortName = params.sort; //排序列名
            params.sortOrder = params.order;//排序方式
            params.taskId = taskId;
            return params;
        },//查询参数
        columns: [
            {title: '主键', field: 'taskUserId', visible: false},
            {title: '任务ID', field: 'taskId', visible: false},
            {title: '用户ID', field: 'accountId', visible: false},
            {title: '所有人', field: 'userName', align: 'left', valign: 'middle'},
            {title: '当前进度', field: 'schedule', align: 'left', valign: 'middle',formatter: splicingPercentSigns},
            {title: '完成率', align: 'left', valign: 'middle',formatter: completionRate}
        ],
        responseHandler: function (result) {
            if (result.code == "000000") {
                var obj = {
                    "rows": result.data,
                    "total": result.totalRecords//总条数
                };
            } else {
                var obj = {
                    "total": 0,
                    "rows": [],
                }
            }
            return obj;
        },
        onLoadSuccess: function () {
            //加载成功时执行
            $("[data-toggle='tooltip']").tooltip();//加这个是为了让操作列的提示图标显示在上方
        },
        onLoadError: function (status) {
            if (status == 403) {
                alert("权限不足！禁止访问！");
            } else {
                //加载失败时执行
                alert("加载失败！");
            }
        },
        formatLoadingMessage: function () {
            return "请稍等，加载中...";
        },
        formatNoMatches: function () {
            return '无符合条件的记录';
        },

    });
}

function completionRate(value, row, index){
    return '<span> '+ row.completed +'/'+ row.target +' </span>';
}